#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
namespace Cephei.QL.Math.Integrals
{
     // <summary> 
	// ! This class provide a non-adaptive integration procedure which uses fixed Gauss-Kronrod abscissae to sample the integrand at a maximum of 87 points.  It is provided for fast integration of smooth functions.  This function applies the Gauss-Kronrod 10-point, 21-point, 43-point and 87-point integration rules in succession until an estimate of the integral of f over (a, b) is achieved within the desired absolute and relative error limits, epsabs and epsrel. The function returns the final approximation, result, an estimate of the absolute error, abserr and the number of function evaluations used, neval. The Gauss-Kronrod rules are designed in such a way that each rule uses all the results of its predecessors, in order to minimize the total number of function evaluations.
	// </summary>
    [Guid ("14D70595-0690-4865-801B-79D5020BF624"),ComVisible(true)]
	public interface IGaussKronrodNonAdaptive : Cephei.QL.Math.Integrals.IIntegrator
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Double RelativeAccuracy {get;}
        // <summary> 
		// <font color="#ff0000">changed from public to protected because there is no implementation</font>
		// </summary>
		 IGaussKronrodNonAdaptive SetRelativeAccuracy(Double prm1);
    }

    // <summary> 
	// ! This class provide a non-adaptive integration procedure which uses fixed Gauss-Kronrod abscissae to sample the integrand at a maximum of 87 points.  It is provided for fast integration of smooth functions.  This function applies the Gauss-Kronrod 10-point, 21-point, 43-point and 87-point integration rules in succession until an estimate of the integral of f over (a, b) is achieved within the desired absolute and relative error limits, epsabs and epsrel. The function returns the final approximation, result, an estimate of the absolute error, abserr and the number of function evaluations used, neval. The Gauss-Kronrod rules are designed in such a way that each rule uses all the results of its predecessors, in order to minimize the total number of function evaluations. Factory
	// </summary>
   	[ComVisible(true)]
    public interface IGaussKronrodNonAdaptive_Factory // : Collection_Factory<IGaussKronrodNonAdaptive, ICell<IGaussKronrodNonAdaptive>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    IGaussKronrodNonAdaptive Create (Double absoluteAccuracy, UInt64 maxEvaluations, Double relativeAccuracy);
    }
}

